import config.*;
import config.converts.MySqlTypeConvert;
import config.rules.DbType;
import config.rules.NamingStrategy;

/**
 *
 * 自动生成映射工具类
 *
 * @author hubin
 *
 */
public class AutoGeneratorHelper {

    /**
     * <p>
     * 测试 run 执行
     * </p>
     * <p>
     * 更多使用查看 http://mp.baomidou.com
     * </p>
     */
    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();

        gc.setOutputDir("D:/springwind/");
        gc.setFileOverride(true);
        // 开启 activeRecord 模式
        gc.setActiveRecord(false);
        // XML 二级缓存
        gc.setEnableCache(false);
        // XML ResultMap
        gc.setBaseResultMap(true);
        // XML columList
        gc.setBaseColumnList(false);
        gc.setAuthor("lension");
        gc.setMapperName("%sDao");
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setTypeConvert(new MySqlTypeConvert());
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("mmz");
        dsc.setPassword("Mmz20180415+");
        dsc.setUrl("jdbc:mysql://rm-wz9np400ex35tp38kyo.mysql.rds.aliyuncs.com:3306/mmz_trade?characterEncoding=utf8");
        mpg.setDataSource(dsc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
//		strategy.setTablePrefix(new String[] { "bmd_", "mp_" });// 此处可以修改为您的表前缀
        // 表名生成策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 字段名生成策略
        strategy.setFieldNaming(NamingStrategy.underline_to_camel);
        strategy.setSuperServiceImplClass("pub.makers.daotemplate.service.impl.BaseCRUDServiceImpl");
        strategy.setSuperServiceClass("pub.makers.daotemplate.service.BaseCRUDService");
        strategy.setSuperMapperClass("pub.makers.daotemplate.dao.impl.BaseCRUDDaoImpl");
        mpg.setStrategy(strategy);

        TemplateConfig templateConfig = new TemplateConfig();

        templateConfig.setEntity("/temp/entity.java.vm");
        templateConfig.setService("/temp/service.java.vm");
        templateConfig.setServiceImpl("/temp/serviceImpl.java.vm");
        templateConfig.setDao("/temp/dao.java.vm");
        mpg.setTemplate(templateConfig);
        // 包配置
        PackageConfig pc = new PackageConfig();
        // 自定义包路径
        pc.setParent("pub.makers.shopwx.trade");
        // 这里是控制器包名，默认 web
        pc.setController("controller");
        pc.setMapper("dao");
        mpg.setPackageInfo(pc);
        // 执行生成
        mpg.execute();
    }

}
